<?php
namespace app\test\controller;
use think\Db;
use think\Controller;
class Refund extends Controller
{
	public function index()
	{
	  $out_trade_no =input('WIDTRout_trade_no');
	  $refund_amount = input('WIDTRrefund_amount');
	  $out_request_no =input('WIDTRout_request_no');
	  $this->assign('out_trade_no',$out_trade_no);
	  $this->assign('refund_amount',$refund_amount);
	  $this->assign('out_request_no',$out_request_no);
		   
		return view('./test1/refund');

	}
	public function refund()
	{
		$refund_number=input('WIDTRout_request_no');
		require_once ROOT_PATH.'vendor/alipay/config.php';
        require_once ROOT_PATH.'vendor/alipay/pagepay/service/AlipayTradeService.php';
        require_once ROOT_PATH.'vendor/alipay/pagepay/buildermodel/AlipayTradeRefundContentBuilder.php';

    //商户订单号，商户网站订单系统中唯一订单号
    $out_trade_no = trim(input('WIDTRout_trade_no'));

    //支付宝交易号
    //$trade_no = trim($_POST['WIDTRtrade_no']);
    //请二选一设置

    //需要退款的金额，该金额不能大于订单金额，必填
    $refund_amount = trim(input('WIDTRrefund_amount'));

    //退款的原因说明
    //$refund_reason = trim($_POST['WIDTRrefund_reason']);

    //标识一次退款请求，同一笔交易多次退款需要保证唯一，如需部分退款，则此参数必传
    $out_request_no = trim(input('WIDTRout_request_no'));

    //构造参数
	$RequestBuilder=new \AlipayTradeRefundContentBuilder();
	$RequestBuilder->setOutTradeNo($out_trade_no);
	//$RequestBuilder->setTradeNo($trade_no);
	$RequestBuilder->setRefundAmount($refund_amount);
	$RequestBuilder->setOutRequestNo($out_request_no);
	//$RequestBuilder->setRefundReason($refund_reason);

	$aop = new \AlipayTradeService($config);
	
	/**
	 * alipay.trade.refund (统一收单交易退款接口)
	 * @param $builder 业务参数，使用buildmodel中的对象生成。
	 * @return $response 支付宝返回的信息
	 */
	$response = $aop->Refund($RequestBuilder);
	$ret=db('refund')->where("refund_number='{$refund_number}'")->update(['refund_status'=>'1']);
	dump($response);
	$result=db('shopcart')->alias('a')->join('refund b','a.shopcart_id=b.shopcart_id')->where("refund_number='{$refund_number}'")->update(['product_refund'=>'2']);
	dump($response);
	$this->success('操作已完成','/backend/order/order_list');
	}
}